#ifndef _XMODEL_H_
#define _XMODEL_H_

#include "BaseModel.h"

class CXModel : public CBaseModel
{
private:

	//////////////////////////////////////////////////////////////////////////
	// X Mesh Attributes
	LPD3DXMESH          m_pMesh;			// Our mesh object in sysmem
	D3DMATERIAL9*       m_pMeshMaterials;	// Materials for our mesh
	LPDIRECT3DTEXTURE9* m_pMeshTextures;	// Textures for our mesh
	DWORD               m_dwNumMaterials;   // Number of mesh materials

	//////////////////////////////////////////////////////////////////////////
	// Default Constructor
	CXModel(void);

public:

	//////////////////////////////////////////////////////////////////////////
	// Destructor
	~CXModel();
	CXModel(EModelType _eType);

	//////////////////////////////////////////////////////////////////////////
	// X Mesh Loading Method
	bool Load(string _szModelName, IDirect3DDevice9* _pDev);

	//////////////////////////////////////////////////////////////////////////
	// Unloads all attributes
	bool Unload(bool _bReloading = false);
	
	//////////////////////////////////////////////////////////////////////////
	// Accessors
	//////////////////////////////////////////////////////////////////////////
	inline LPD3DXMESH* GetMesh(void) { return &m_pMesh; }
	inline D3DMATERIAL9* GetMaterials(void) { return m_pMeshMaterials; }
	inline LPDIRECT3DTEXTURE9* GetTextures(void) { return m_pMeshTextures; }
	inline const DWORD GetNumMaterials(void) { return m_dwNumMaterials; }

	//////////////////////////////////////////////////////////////////////////
	// Modifiers
	//////////////////////////////////////////////////////////////////////////
};

#endif